home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Misc / GMS / GMSDev / Source / Asm / Blitter / OBJ_RamboWorm.s < prev    next >
Encoding:
Text File  |  1997-12-16  |  5.5 KB  |  263 lines

  1. ;-------T-------T------------------------T----------------------------------;
  2. ;Name:      Bob example
  3. ;Author:    Paul Manias
  4. ;Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
  5. ;
  6. ;This example blits a Worm from an IFF file onto a double buffered screen.
  7. ;The RESTORE mode is used to put the background back.
  8. ;
  9. ;All structures defined externally.
  10.  
  11.     INCDIR    "GMSDev:Includes/"
  12.     INCLUDE    "dpkernel/dpkernel.i"
  13.     INCLUDE    "files/objects.i"
  14.     INCLUDE    "modules/objects.i"
  15.  
  16.     SECTION    "Demo",CODE
  17.  
  18. ;===========================================================================;
  19. ;                             INITIALISE DEMO
  20. ;===========================================================================;
  21.  
  22.     STARTDPK
  23.  
  24. Start:    MOVEM.L    A0-A6/D1-D7,-(SP)
  25.     move.l    DPKBase(pc),a6
  26.     lea    OBJFileName(pc),a0    ;a0 = Object FileName.
  27.     moveq    #ID_OBJECTFILE,d0    ;d0 = Object DataBase.
  28.     CALL    Load
  29.     move.l    d0,ObjectData
  30.     beq    .Exit
  31.  
  32.     ;Open the objects module.
  33.  
  34.     lea    ObjModTags(pc),a0    ;a0 = Module tags.
  35.     sub.l    a1,a1    ;a1 = No container.
  36.     CALL    Init    ;>> = Initialise Cards Interface.
  37.     tst.l    d0    ;d0 = Check for error.
  38.     beq    .Exit    ;>> = Error, exit.
  39.     move.l    d0,a0    ;a0 = Card module.
  40.     move.l    MOD_ModBase(a0),OBJBase    ;ma = Store jump table.
  41.  
  42.     move.l    OBJBase(pc),a6
  43.     move.l    ObjectData(pc),a0    ;a0 = Object Base.
  44.     lea    Objects(pc),a1    ;a1 = A list of objects to get.
  45.     CALL    GetFileObjectList    ;>> = Get our objects.
  46.     tst.l    d0    ;d0 = Check for error.
  47.     bne    .Exit    ;>> = Quit if error.
  48.  
  49. ;---------------------------------------------------------------------------;
  50.  
  51.     move.l    DPKBase(pc),a6
  52.     lea    BackgroundFile(pc),a0
  53.     moveq    #ID_PICTURE,d0
  54.     CALL    Load
  55.     move.l    d0,PIC_Background
  56.     beq    .Exit
  57.  
  58.     moveq    #ID_SCREEN,d0
  59.     CALL    Get
  60.     move.l    d0,Screen
  61.     beq    .Exit
  62.  
  63.     ;Copy picture details to screen.
  64.  
  65.     move.l    PIC_Background(pc),a0
  66.     move.l    PIC_Bitmap(a0),a2
  67.     move.l    Screen(pc),a1
  68.     move.l    #DBLBUFFER,GS_Attrib(a1)
  69.     move.l    BMP_Data(a2),GS_MemPtr1(a1)
  70.     CALL    CopyStructure
  71.  
  72.     ;Initialise the screen.
  73.  
  74.     move.l    Screen(pc),a0    ;Initialise the screen.
  75.     sub.l    a1,a1
  76.     CALL    Init
  77.     tst.l    d0
  78.     beq.s    .Exit
  79.  
  80.     move.l    BLTBase(pc),a6
  81.     move.l    Screen(pc),a0
  82.     moveq    #BUFFER1,d0
  83.     moveq    #BUFFER2,d1
  84.     CALL    bltCopyBuffer
  85.  
  86.     move.l    DPKBase(pc),a6
  87.     lea    RestoreTags(pc),a0
  88.     move.l    Screen(pc),a1
  89.     CALL    Init
  90.     tst.l    d0
  91.     beq.s    .Exit
  92.  
  93.     move.l    BOB_Rambo(pc),a0
  94.     move.l    Screen(pc),a1
  95.     CALL    Init
  96.     tst.l    d0
  97.     beq.s    .Exit
  98.  
  99.     move.l    SND_Rambo(pc),a0
  100.     sub.l    a1,a1
  101.     CALL    Init
  102.     tst.l    d0
  103.     beq.s    .Exit
  104.  
  105.     moveq    #ID_JOYDATA,d0    ;Get joydata structure.
  106.     CALL    Get
  107.     move.l    d0,JoyData
  108.     beq.s    .Exit
  109.     move.l    d0,a0    ;Initialise the joydata structure.
  110.     sub.l    a1,a1
  111.     CALL    Init
  112.     tst.l    d0
  113.     beq.s    .Exit
  114.  
  115.     move.l    Screen(pc),a0
  116.     CALL    Display
  117.  
  118.     bsr.s    Main
  119.  
  120. .Exit    move.l    DPKBase(pc),a6
  121.     move.l    JoyData(pc),a0
  122.     CALL    Free
  123.     move.l    SND_Rambo(pc),a0
  124.     CALL    Free
  125.     move.l    BOB_Rambo(pc),a0
  126.     CALL    Free
  127.     move.l    Restore(pc),a0
  128.     CALL    Free
  129.     move.l    PIC_Background(pc),a0
  130.     CALL    Free
  131.     move.l    Screen(pc),a0
  132.     CALL    Free
  133.     move.l    ObjectData(pc),a0
  134.     CALL    Free
  135.     move.l    ObjModule(pc),a0
  136.     CALL    Free
  137.     MOVEM.L    (SP)+,A0-A6/D1-D7
  138.     moveq    #ERR_OK,d0
  139.     rts
  140.  
  141. ;===========================================================================;
  142. ;                                MAIN LOOP
  143. ;===========================================================================;
  144.  
  145. SPEED    =    5
  146. FIRESPEED =    0
  147.  
  148. Main:    moveq    #$00,d7
  149.  
  150. .Loop    move.l    DPKBase(pc),a6
  151.     move.l    Restore(pc),a0    ;a0 = Restore.
  152.     CALL    Activate    ;>> = Restore the backgrounds.
  153.  
  154.     move.l    BOB_Rambo(pc),a0
  155.     CALL    Draw    ;>> = Blit the bob.
  156.  
  157.     move.l    SCRBase(pc),a6
  158.     CALL    scrWaitAVBL    ;>> = Wait for VBL.
  159.     move.l    Screen(pc),a0
  160.     CALL    scrSwapBuffers
  161.  
  162.     addq.w    #1,d7
  163.  
  164.     move.l    DPKBase(pc),a6
  165.     move.l    BOB_Rambo(pc),a1
  166.     tst.b    FireState
  167.     bne.s    .FireOn
  168.  
  169.     cmp.w    #SPEED,d7
  170.     ble.s    .Move
  171.     moveq    #$00,d7
  172.     addq.w    #1,BOB_Frame(a1)
  173.     cmp.w    #9,BOB_Frame(a1)
  174.     blt.s    .Move
  175.     clr.w    BOB_Frame(a1)
  176.     bra.s    .Move
  177.  
  178. .FireOn    cmp.w    #FIRESPEED,d7
  179.     ble.s    .Move
  180.     moveq    #$00,d7
  181.     cmp.w    #10,BOB_Frame(a1)
  182.     bge.s    .On
  183.     move.w    #9,BOB_Frame(a1)
  184.  
  185. .On    addq.w    #1,BOB_Frame(a1)
  186.     cmp.w    #13,BOB_Frame(a1)
  187.     blt.s    .Move
  188.     clr.w    BOB_Frame(a1)
  189.     clr.b    FireState
  190.     move.l    SND_Rambo(pc),a0
  191.     CALL    Activate
  192.  
  193. .Move    move.l    JoyData(pc),a0
  194.     CALL    Query
  195.     move.l    JoyData(pc),a0
  196.     move.l    BOB_Rambo(pc),a1
  197.     move.w    JD_XChange(a0),d0
  198.     add.w    d0,BOB_XCoord(a1)
  199.     move.w    JD_YChange(a0),d0
  200.     add.w    d0,BOB_YCoord(a1)
  201.     move.l    JD_Buttons(a0),d0
  202.     btst    #JB_LMB,d0
  203.     beq.s    .chkRMB
  204.     st    FireState    ;Set fire to on.
  205. .chkRMB    btst    #JB_RMB,d0
  206.     beq    .Loop
  207.     rts
  208.  
  209. FireState:
  210.     dc.b    0
  211.     even
  212.  
  213. ;===========================================================================;
  214. ;                                  DATA
  215. ;===========================================================================;
  216.  
  217. ObjectData:    dc.l  0
  218. JoyData:    dc.l  0
  219. Screen:        dc.l  0
  220. PIC_Background:    dc.l  0
  221. BackgroundFile:    FILENAME "GMS:demos/data/PIC.Green"
  222.  
  223. OBJFileName:    FILENAME "GMS:demos/data/OBJ.Worm"
  224.  
  225. Objects:    dc.l  OBJECTLIST,0
  226.         dc.l  TXT_Worm
  227. BOB_Rambo:    dc.l  0
  228.         dc.l  TXT_SNDRambo
  229. SND_Rambo:    dc.l  0
  230.         dc.l  LISTEND
  231.  
  232. TXT_Worm:    dc.b  "Worm",0
  233. TXT_BOBPicture:    dc.b  "BOBPicture",0
  234. TXT_SNDRambo:    dc.b  "SNDRambo",0
  235.         even
  236.  
  237. RestoreTags:    dc.l  TAGS_RESTORE
  238. Restore:    dc.l  0
  239.         dc.l  RSA_Entries,1
  240.         dc.l  TAGEND
  241.  
  242. ;---------------------------------------------------------------------------;
  243.  
  244. ObjModTags:    dc.l  TAGS_MODULE
  245. ObjModule:    dc.l  0
  246.         dc.l  MODA_Name,ObjName
  247.         dc.l  TAGEND
  248.  
  249. ObjName:    dc.b  "mod.objects",0
  250.         even
  251.  
  252. OBJBase:    dc.l  0
  253.  
  254. ;===========================================================================;
  255.  
  256. ProgName:    dc.b  "Rambo Worm",0
  257. ProgAuthor:    dc.b  "Paul Manias",0
  258. ProgDate:    dc.b  "14 December 1997",0
  259. ProgCopyright:    dc.b  "DreamWorld Productions (c) 1996-1997.  Freely distributable.",0
  260. ProgShort:    dc.b  "Simple demonstration.",0
  261.         even
  262.  
  263.